#include "mypushbutton.h"
#include<QPropertyAnimation>
#include<QDebug>
#include<QPushButton>
MyPushButton::MyPushButton(QString normalImg,QString pressImg){
    this->normalPath=normalImg;
    this->pressPath=pressImg;

    //创建Qpixmap对象，用以放图标图片
    QPixmap pix;
    //设置为bool更好查错，如果是没加载好图片这里可以纠错
    bool ret=pix.load(this->normalPath);
    if(!ret){
        QString str=QString("图标图片加载失败，失败路径为:%1!").arg(this->normalPath);
    }

    //设置按钮尺寸
    this->setFixedSize(pix.width(),pix.height());
    //设置不规则样式
    this->setStyleSheet("QPushButton{border:0px;}");
    //设置图标图片
    this->setIcon(pix);
    //设置图标的大小
    this->setIconSize(QSize(pix.width(),pix.height()));

}


void MyPushButton::zoom1()
{
    //创建动画对象
    QPropertyAnimation* animation=new QPropertyAnimation(this,"geometry");
    //设置动画时间间隔
    animation->setDuration(200);//200毫秒
    //设置动画开始位置
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //设置结束位置
    animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    //设置动画的曲线（加速or匀速等）
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //设置动画开始执行
    animation->start(QAbstractAnimation::DeleteWhenStopped);

}
//向下跳
void MyPushButton::zoom2()
{
    //创建动画对象
    QPropertyAnimation* animation=new QPropertyAnimation(this,"geometry");
    //设置动画时间间隔
    animation->setDuration(200);//200毫秒
    //设置动画开始位置
    animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    //设置结束位置
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //设置动画的曲线（加速or匀速等）
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //设置动画开始执行
    animation->start(QAbstractAnimation::DeleteWhenStopped);
}


//mypushbutton这个类继承于Qpushbutton，这里的mousePressEvent是重载了父类的mousePressEvent函数
//所以修改名称后不会有反应
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    //一定要在presspath前加上this，不然就没有反应
    if(this->pressPath != ""){
        //创建Qpixmap对象，用以放图标图片
                QPixmap pix;
        //设置为bool更好查错，如果是没加载好图片这里可以纠错
        bool ret=pix.load(this->pressPath);
        if(!ret){
            QString str=QString("图标图片加载失败，失败路径为:%1!").arg(this->pressPath);
        }

        //设置按钮尺寸
        this->setFixedSize(pix.width(),pix.height());
        //设置不规则样式
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标图片
        this->setIcon(pix);
        //设置图标的大小
        this->setIconSize(QSize(pix.width(),pix.height()));

    }

    //其他的事情，交给QMouseEvent类
    QPushButton::mousePressEvent(e);

}

void MyPushButton::mouseRleaseEvent(QMouseEvent *e)
{
    if(this->pressPath != ""){
        //创建Qpixmap对象，用以放图标图片
        QPixmap pix;
        //设置为bool更好查错，如果是没加载好图片这里可以纠错
        bool ret=pix.load(this->normalPath);
        if(!ret){
            QString str=QString("图标图片加载失败，失败路径为:%1!").arg(this->normalPath);
        }

        //设置按钮尺寸
        this->setFixedSize(pix.width(),pix.height());
        //设置不规则样式
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标图片
        this->setIcon(pix);
        //设置图标的大小
        this->setIconSize(QSize(pix.width(),pix.height()));

    }
    QPushButton::mouseReleaseEvent(e);
}

